home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / misc / vpan100.zip / SUSCEPT.H < prev    next >
C/C++ Source or Header  |  1993-08-26  |  4KB  |  121 lines

  1. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. //+                       |
  3. //+          SUSCEPT.H            |    Written by O.Rasizade
  4. //+  DEFINITIONS FOR SUSCEPTEMETER    |     Copyright June 1992
  5. //+                         |
  6. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7. #ifndef __SUSCEPT_H
  8. #define __SUSCEPT_H
  9.  
  10. #if __STDC__
  11. #define _Cdecl
  12. #else
  13. #define _Cdecl  cdecl
  14. #endif
  15.  
  16. #include <camac.h>
  17.  
  18. #define CNF_NAME    "susc220.cnf"
  19. #define TMP_DATA    "susctmp.$$$"
  20.  
  21.  
  22. //---------------- EXTERNALS --------------------
  23.  
  24. extern void interrupt camISR(void);
  25.  
  26. extern byte rCntSusc,iCntSusc,rCntTermo,iCntTermo;
  27.  
  28. extern signed int A1x8,B1x8,rT,iT;//accumulated real and im part
  29.                 // of susceptibility and termovoltage
  30.                 // nessesary to divide by 8
  31.  
  32. extern byte errCodeISR;    // from SUSC_ISR module. Meaning:
  33.             // 1: "ADC interrupt" (ADC int is disabled)
  34.             // 2: "psd Status error" ( if it is neither 1 nor 2)
  35.             // 3: "ADC timeout" ( ADC is silent too long )
  36.  
  37. extern byte psdStatus;  // from SUSC_ISR module. Meaning:
  38.             // 0 - error in measuring sequence
  39.             // 1 - making sin*sin
  40.             // 2 - making cos*cos
  41.         // from SUS_MEAS.C
  42. extern boolean measInProgress;    // if nonzero then measurement is in progress
  43. extern double a1,b1,Temp,R,disbalance,module;//real and im part of susceptibility and termovoltage
  44. extern float fi;
  45. extern double cosfi,sinfi; // balance
  46. extern int constI,altI;     //constant and alternate currents
  47. extern int gainAmpSusc,gainAmpTermo,K_gain;
  48.  
  49. //--------------- CAMAC STATIONS --------------
  50.  
  51. #define Ampl_N    9    // Two channel amplifier
  52. #define PSD_N   7    // Phase sens.detector
  53. #define DAC_N   6
  54. #define ADC_N   1
  55.  
  56. #define ADC_ZERO 0x7ff
  57. #define IMAX    600.    // max currents for DAC's (ma)
  58. #define CUR_LIMIT 750    // limit of summury (AC+DC) current
  59. #define    maskLAM  PSD_N  // LAM mask for KK009
  60.  
  61. //-------------- CAMAC MODULE'S COMMAND -----------------
  62.  
  63.         //--------- Amplifier -------
  64. #define setAmpl_1(j)    poke(CamBase,Ampl_N*0x400+18*2,(j))
  65. #define setAmpl_2(j)    poke(CamBase,Ampl_N*0x400+0x40+18*2,(j))
  66.  
  67.         //--------- Phase Sen. Detector-------
  68. //#define clrLamPSD    poke(CamBase,PSD_N*0x400+4*0x40+18*2,0)
  69. #define clrLamPSD    poke(CamBase,PSD_N*0x400+0*0x40+2*2,0)
  70.                              // clears LAM
  71. #define swInPhasePSD    poke(CamBase,PSD_N*0x400+0x40+18*2,8)
  72.                              //switch to
  73. #define swOutPhasePSD    poke(CamBase,PSD_N*0x400+0x40+18*2,0)
  74.  
  75.         //--------- DAC and heater ----------------------------
  76. #define HeatON        poke(CamBase,DAC_N*0x400+16*2,1)
  77. #define HeatOFF        poke(CamBase,DAC_N*0x400+16*2,0)
  78.  #ifdef __cplusplus
  79.  extern "C" {
  80.  #endif
  81. int _Cdecl far setConstI(int i);    // set constant current i=current
  82. int _Cdecl far setAltI(int i);    // set alternate current i=current
  83.  #ifdef __cplusplus
  84.  }
  85.  #endif
  86.  
  87.         //--------- ADC ---------
  88. #define startADC    poke(CamBase,ADC_N*0x400+25*2,0)
  89.                             // also clears LAM
  90. #define rdADC        0xfff&peek(CamBase,ADC_N*0x400+2*2)
  91.                             // also clears LAM
  92. #define setADCrange    poke(CamBase,ADC_N*0x400+17*2,1)
  93. #define setADCch(chanN)    poke(CamBase,ADC_N*0x400+0x40+17*2,(chanN))
  94.                 // needs delay about 50 micro sec
  95. #define adc2volt(n)    ((n)*5.0/0xfff) // converts ADC read data
  96. void _Cdecl  updateIndicators(void);    //  to volts
  97.  
  98. //-------------------- FUNCTION DECLARATIONS ------------
  99.  #ifdef __cplusplus
  100.  extern "C" {
  101.  #endif
  102. void _Cdecl InitSuscept(void);
  103. void _Cdecl quitSuscept(void);
  104. double _Cdecl MeasureTemp(double *Res);//Res:measured value of thermo resistor
  105. void _Cdecl errExit(void);
  106.  
  107.     //---------------------- HYSTERESIS --------
  108.  
  109. int _Cdecl InitHyst(void);// INITIALIZE HYSTERESIS MEASUREMENT
  110.               //    returns: 0 : OK
  111.               //        -1 : cannot create data file
  112. int _Cdecl InitTdep(void);// INITIALIZE T-DEPENDENCE MEASUREMENT
  113.               //    returns: 0 : OK
  114.               //        -1 : cannot create data file
  115. void _Cdecl measureA1B1T(void);
  116.  
  117.  #ifdef __cplusplus
  118.  }
  119.  #endif
  120.  
  121. #endif __SUSCEPT_H